<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>uartps: xuartps_intr_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">uartps
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xuartps__intr__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xuartps_intr_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This example runs on zynqmp evaluation board (zcu102), it sends data and expects to receive the same data through the device using the local loopback mode in interrupt mode by using <a class="el" href="struct_x_uart_ps.html" title="The XUartPs driver instance data structure. ">XUartPs</a> driver. </p>
<dl class="section note"><dt>Note</dt><dd>The example contains an infinite loop such that if interrupts are not working it may hang.</dd></dl>
<p>MODIFICATION HISTORY: </p>
<pre>
Ver   Who    Date     Changes
</p>
<hr/>
<p>
1.00a  drg/jz 01/13/10 First Release
1.00a  sdm    05/25/11 Modified the example for supporting Peripheral tests
                in SDK
1.03a  sg     07/16/12 Updated the example for CR 666306. Modified
                the device ID to use the first Device Id
                and increased the receive timeout to 8
                Removed the printf at the start of the main
                Put the device normal mode at the end of the example
3.1     kvn             04/10/15 Added code to support Zynq Ultrascale+ MP.
3.1   mus     01/14/16 Added support for intc interrupt controller
3.8   adk     10/05/19 Don't update the DeviceId variable in peripheral test
                 app case.
3.12    gm      09/26/22 Corrected SetRecvTimeout description details.
3.16    ht      10/28/24 Fix compilation warnings in SDT flow peripheral tests</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xuartps__intr__example_8c.html#aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c">UartPsIntrExample</a> (INTC *IntcInstPtr, <a class="el" href="struct_x_uart_ps.html">XUartPs</a> *UartInstPtr, u16 DeviceId, u16 UartIntrId)</td></tr>
<tr class="memdesc:aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function does a minimal test on the UartPS device and driver as a design example.  <a href="#aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c">More...</a><br/></td></tr>
<tr class="separator:aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc3b6076857bc201b736289712d9ae05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xuartps__intr__example_8c.html#afc3b6076857bc201b736289712d9ae05">Handler</a> (void *CallBackRef, u32 Event, unsigned int EventData)</td></tr>
<tr class="memdesc:afc3b6076857bc201b736289712d9ae05"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the handler which performs processing to handle data events from the device.  <a href="#afc3b6076857bc201b736289712d9ae05">More...</a><br/></td></tr>
<tr class="separator:afc3b6076857bc201b736289712d9ae05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xuartps__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function to call the Uart interrupt example.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br/></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="afc3b6076857bc201b736289712d9ae05"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Handler </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>CallBackRef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>Event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>EventData</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is the handler which performs processing to handle data events from the device. </p>
<p>It is called from an interrupt context. so the amount of processing should be minimal.</p>
<p>This handler provides an example of how to handle data for the device and is application specific.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CallBackRef</td><td>contains a callback reference from the driver, in this case it is the instance pointer for the <a class="el" href="struct_x_uart_ps.html" title="The XUartPs driver instance data structure. ">XUartPs</a> driver. </td></tr>
    <tr><td class="paramname">Event</td><td>contains the specific kind of event that has occurred. </td></tr>
    <tr><td class="paramname">EventData</td><td>contains the number of bytes sent or received for sent and receive events.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

</div>
</div>
<a class="anchor" id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Main function to call the Uart interrupt example. </p>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful, XST_FAILURE if unsuccessful</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None </dd></dl>

<p>References <a class="el" href="xuartps__intr__example_8c.html#aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c">UartPsIntrExample()</a>.</p>

</div>
</div>
<a class="anchor" id="aee2cb1d1ffc3c0fdb4ca1c8a07a3f65c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int UartPsIntrExample </td>
          <td>(</td>
          <td class="paramtype">INTC *&#160;</td>
          <td class="paramname"><em>IntcInstPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_uart_ps.html">XUartPs</a> *&#160;</td>
          <td class="paramname"><em>UartInstPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>DeviceId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>UartIntrId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function does a minimal test on the UartPS device and driver as a design example. </p>
<p>The purpose of this function is to illustrate how to use the <a class="el" href="struct_x_uart_ps.html" title="The XUartPs driver instance data structure. ">XUartPs</a> driver.</p>
<p>This function sends data and expects to receive the same data through the device using the local loopback mode.</p>
<p>This function uses interrupt mode of the device.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IntcInstPtr</td><td>is a pointer to the instance of the Scu Gic driver. </td></tr>
    <tr><td class="paramname">UartInstPtr</td><td>is a pointer to the instance of the UART driver which is going to be connected to the interrupt controller. </td></tr>
    <tr><td class="paramname">DeviceId</td><td>is the device Id of the UART device and is typically XPAR_&lt;UARTPS_instance&gt;_DEVICE_ID value from xparameters.h. </td></tr>
    <tr><td class="paramname">UartIntrId</td><td>is the interrupt Id and is typically XPAR_&lt;UARTPS_instance&gt;_INTR value from xparameters.h.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful, otherwise XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>This function contains an infinite loop such that if interrupts are not working it may never return. </p>

<p>References <a class="el" href="struct_x_uart_ps___config.html#ae84ddc1aadabf71057f148681630fa40">XUartPs_Config::BaseAddress</a>, <a class="el" href="group__uartps.html#ga371d525c4d48239a3ce77c44d0a92b05">XUartPs_CfgInitialize()</a>, <a class="el" href="group__uartps.html#gabf86fb20a58e4a7fbd73afa49f8eb604">XUartPs_InterruptHandler()</a>, <a class="el" href="group__uartps.html#gaa6048212fde48f7188efd90c83c4822d">XUARTPS_IXR_FRAMING</a>, <a class="el" href="group__uartps.html#gafd4a37077bddeeefcc39d58b4f08fb23">XUARTPS_IXR_OVER</a>, <a class="el" href="group__uartps.html#ga2a11620ed0dd465adf0de24f6d7ad418">XUARTPS_IXR_PARITY</a>, <a class="el" href="group__uartps.html#gab5df3d1fd00008bd7cc177abd02f07e5">XUARTPS_IXR_RBRK</a>, <a class="el" href="group__uartps.html#gae374cc3c085d3cac795d95b657b03d5e">XUARTPS_IXR_RXFULL</a>, <a class="el" href="group__uartps.html#gaad5de1c646049d7ced8841e316a34892">XUARTPS_IXR_RXOVR</a>, <a class="el" href="group__uartps.html#ga7194f5e99a1a98178f6bf1462791aaac">XUARTPS_IXR_TOUT</a>, <a class="el" href="group__uartps.html#ga9a4207349f3980046ba4ea9e4379007a">XUARTPS_IXR_TXEMPTY</a>, <a class="el" href="group__uartps.html#gaaefce314c7582681d7144d3b4f41e72b">XUartPs_LookupConfig()</a>, <a class="el" href="group__uartps.html#ga3a71908d40b06c097599a5a29d61e800">XUARTPS_OPER_MODE_LOCAL_LOOP</a>, <a class="el" href="group__uartps.html#ga9d916026363230478a8c8729e23f3352">XUARTPS_OPER_MODE_NORMAL</a>, <a class="el" href="group__uartps.html#gadc16932076b99cd747e702dcbecd102b">XUartPs_Recv()</a>, <a class="el" href="group__uartps.html#ga64e7142d1c69e2e29c9e323c4497baaf">XUartPs_SelfTest()</a>, <a class="el" href="group__uartps.html#ga17b3e12a296eecf17be4a4b8583576e7">XUartPs_Send()</a>, <a class="el" href="group__uartps.html#ga9528098e589491997c7805592a4b5a7b">XUartPs_SetHandler()</a>, <a class="el" href="group__uartps.html#gab3b65e926f6f4ac7ab41a70801ba12c3">XUartPs_SetInterruptMask()</a>, <a class="el" href="group__uartps.html#ga9c84f5324979f1ba3a9f5a866806d0e8">XUartPs_SetOperMode()</a>, and <a class="el" href="group__uartps.html#ga75f0201ac3749384f29171565410a8df">XUartPs_SetRecvTimeout()</a>.</p>

<p>Referenced by <a class="el" href="xuartps__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
